#ifndef FACE_H
#define FACE_H

#include <QWidget>
#include <opencv2/opencv.hpp>
#include <QTimer>
#include <QTcpSocket>  // 添加 TCP 支持

namespace Ui {
class Face;
}

class Mainpage;  // 前向声明

class Face : public QWidget
{
    Q_OBJECT

public:
    explicit Face(const QString &employeeId, Mainpage *mainpage, QWidget *parent = nullptr);
    ~Face();

protected:
    // 用于拖动窗口的事件处理函数
    void mousePressEvent(QMouseEvent *event) override;
    void mouseMoveEvent(QMouseEvent *event) override;

    void paintEvent(QPaintEvent *event) override;

private slots:
    void on_returnButton_clicked();

    void on_start_clicked();

    void on_yes_clicked();

    void processFrameAndUpdate();  // 用于处理摄像头帧的槽函数

private:
    Ui::Face *ui;
    Mainpage *mainpageWindow;
    QString employeeId;  // 存储工号

    cv::VideoCapture cap;         // 用于捕捉摄像头
    cv::CascadeClassifier cascada; // 用于人脸检测
    QTimer *timer;                // 定时器，用于定时捕捉帧
    int pic_num = 1;              // 拍照计数

    QTcpSocket *tcpSocket;  // 用于与服务器通信
    void sendFiles();

    // 用于记录拖动时鼠标位置的成员变量
    QPoint m_dragPosition;

    // 添加用于判断是否点击标题栏的成员变量
    bool m_isTitleBarClicked = false;
};

#endif // FACE_H
